import org.junit.jupiter.api.Test;

import java.time.ZoneOffset;
import java.time.ZonedDateTime;
import java.time.zone.ZoneRules;

public class ZoneOffsetDemo {
    /**
     * MAX：zoneOffset 对象支持的最大偏移量。
     * MIN：zoneOffset 对象支持的最小偏移量。
     * UTC：偏移量为 0 的 zoneOffset 对象。
     */
    @Test
    public void test01(){
        System.out.println(ZoneOffset.MAX); // 输出 zoneOffset对象支持的最大偏移量。
        System.out.println(ZoneOffset.MIN); // 输出 zoneOffset对象支持的最小偏移量。
        System.out.println(ZoneOffset.UTC); // 输出 Z。
    }
}
class ZoneOffsetDemo01 {
    /**
     * from(TemporalAccessor temporal)
     * 作用：从其他具有时区或偏移量概念的时间对象中获取zoneOffset对象。
     */
    @Test
    public void test01(){
        ZonedDateTime zonedDateTime01 = ZonedDateTime.parse("2007-12-03T10:15:30+08:00[Asia/Shanghai]");
        ZoneOffset zoneOffset01 = ZoneOffset.from(zonedDateTime01);
        System.out.println(zoneOffset01); // 输出 +08:00
    }

    /**
     * of(String offsetId)
     * 作用：将字符串解析成zoneOffset对象，格式如下：
     *      +hh:mm:ss
     *      -hh:mm:ss
     *      ...
     *
     * ofHours(int hours)
     * ofHoursMinutes(int hours, int minutes)
     * ofHoursMinutesSeconds(int hours, int minutes, int seconds)
     * 作用：给定时分秒数据创建zoneOffset对象。
     *
     * ofTotalSeconds(int totalSeconds)
     * 作用：给定距离00:00:00的秒数获取zoneOffset对象。
     */
    @Test
    public void test02(){
        ZoneOffset zoneOffset01 = ZoneOffset.of("+08:00");
        System.out.println(zoneOffset01); // 输出 +08:00

        ZoneOffset zoneOffset02 = ZoneOffset.ofHours(8);
        ZoneOffset zoneOffset03 = ZoneOffset.ofHoursMinutesSeconds(8, 30, 45);
        System.out.println(zoneOffset02); // 输出 +08:00
        System.out.println(zoneOffset03); // 输出 +08:30:45

        ZoneOffset zoneOffset04 = ZoneOffset.ofTotalSeconds(1);
        System.out.println(zoneOffset04); // 输出 +00:00:01
    }
}

class ZoneOffsetDemo02 {

    /**
     * getId()
     * 作用：获取偏移量 id。
     */
    @Test
    public void test01(){
        ZoneOffset zoneOffset01 = ZoneOffset.of("+08:00");
        System.out.println(zoneOffset01.getId()); // 输出 +08:00
    }

    /**
     * getRules()
     * 作用：获取时差的计算规则 zoneRules 对象。
     */
    @Test
    public void test02(){
        ZoneOffset zoneOffset01 = ZoneOffset.of("+08:00");
        ZoneRules rules = zoneOffset01.getRules();
        System.out.println(rules); // 输出 ZoneRules[currentStandardOffset=+08:00]
    }

    /**
     * getTotalSeconds()
     * 作用：获取偏移量距离 00:00:00 的秒数
     */
    @Test
    public void test03(){
        ZoneOffset zoneOffset01 = ZoneOffset.of("+00:00:00");
        ZoneOffset zoneOffset02 = ZoneOffset.of("+00:00:01");
        System.out.println(zoneOffset01.getTotalSeconds()); // 输出 0
        System.out.println(zoneOffset02.getTotalSeconds()); // 输出 1
    }

}








